package com.foin.recorder;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.os.Bundle;
import android.widget.ImageView;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    ImageView mImage;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mImage = findViewById(R.id.image);
        mImage.setImageBitmap(getCenterCropBitmap(Color.WHITE, 280, 224, BitmapFactory.decodeResource(getResources(), R.drawable.icon_test)));
    }


    private Bitmap getCenterCropBitmap(int fillColor, int roundWidth, int roundHeight, Bitmap bitmap) {
        Bitmap output = Bitmap.createBitmap(roundWidth, roundHeight, Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(output);
        RectF outerRect = new RectF(0, 0, roundWidth, roundHeight);
        Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
        paint.setColor(fillColor);
        paint.setStyle(Paint.Style.FILL);
        canvas.drawRoundRect(outerRect, 0, 0, paint);
        int bitmapWidth = bitmap.getWidth();
        int bitmapHeight = bitmap.getHeight();
        float oldsc = roundWidth / (float) roundHeight;
        float newsc = bitmapWidth / (float) bitmapHeight;
        if (oldsc > newsc) {
            int newHei = roundHeight;
            int newWid = newHei * bitmapWidth / bitmapHeight;
            Bitmap newBit = Bitmap.createScaledBitmap(bitmap, newWid, newHei, true);
            if (newBit != null) {
                canvas.drawBitmap(newBit, (roundWidth - newWid) / 2, 0, paint);
            }
        } else if (oldsc < newsc) {
            int newWid = roundWidth;
            int newHei = newWid * bitmapHeight / bitmapWidth;
            Bitmap newBit = Bitmap.createScaledBitmap(bitmap, newWid, newHei, true);
            if (newBit != null) {
                canvas.drawBitmap(newBit, 0, (roundHeight - newHei) / 2, paint);
            }
        } else {
            int newWid = roundWidth;
            int newHei = newWid;
            Bitmap newBit = Bitmap.createScaledBitmap(bitmap, newWid, newHei, true);
            if (newBit != null) {
                canvas.drawBitmap(newBit, 0, 0, paint);
            }
        }
        canvas.save();
        canvas.restore();
        return output;
    }

}
